package com.lg.java.design;

/**
 * 多线程使用的是 同一个 对象
 *
 * 懒汉模式
 *  dcl  + volatile(防止指令重排序)
 *  静态内部类
 *
 * 静态变量存储在方法区中，方法区是线程安全的。由于所有的线程都共享方法区，所以，方法区里的数据访问必须被设计成线程安全的。
 * 例如，假如同时有两个线程都企图访问方法区中的同一个类，而这个类还没有被装入JVM，那么只允许一个线程去装载它，而其它线程必须等待 ！
 */
public class Hoon2 {


    private Hoon2(){

    }

    //当调用Hoon2 它不会被加载  调用getInstance的时候才会被加载，在加载的时候就被 多个线程中的一个 初始化了
    private static class Hoon2Instance{
        private  static  Hoon2 intance = new Hoon2();
    }


    public static Hoon2 getInstance(){
        return Hoon2Instance.intance;
    }

}
